package sort;

/**
 * @Author wangtengyu
 * @Create 2018-09-10-8:49 冒泡排序，相邻的两个之间比较，每次排序结束后最大数字在最大索引处
 *
 *
 * 要点 1.相邻两个元素比较，最大元素在最大索引处 2.每次比较后，最大元素就不用比较了 3.设定一个变量flag，如果没有进行交换，说明排序已经完成，没必要进行无意义的比较计算了
 */
public class MaoPaoSort {


  public void sort(int[] array) {
    for (int i = 1; i < array.length; i++) {//控制比较次数
      boolean flag = false;
      for (int j = 0; j < array.length - i; j++) {//每次比较后，最后一个就不用比较了
        if (array[j] > array[j + 1]) {
          int temp = array[j];
          array[j] = array[j + 1];
          array[j + 1] = temp;
          flag = true;
        }
      }
      if (flag == false) {
        break;
      }
      System.out.print("第" + i + "轮排序的结果为");
      printArray(array);
      System.out.println();
    }
  }

  public void printArray(int[] array) {
    for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
    }
  }


  public static void main(String[] args) {
    MaoPaoSort maoPaoSort = new MaoPaoSort();
    int[] array = new int[]{1, 3, 2, 56, 32, 43, 12};
    maoPaoSort.sort(array);

  }

}
